package controller;

import java.util.List;


import org.hibernate.HibernateException;
import org.hibernate.Session;
import model.Usuario;
import util.HibernateUtil;

public class UsuarioManager extends HibernateUtil {
	
	 
	    public Usuario add(Usuario usuario) {
	        
	    	Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	        session.beginTransaction();
	        try {
	        session.save(usuario);
	        }
	        catch (HibernateException e) {
	            e.printStackTrace();
	            session.getTransaction().rollback();
	        }
	        session.getTransaction().commit();
	        return usuario;
	    }
	    
	    public Usuario delete(int idUsuario) {
	        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	        session.beginTransaction();
	        Usuario usuario = (Usuario) session.load(Usuario.class, idUsuario);
	        if(null != usuario) {
	            
	        	try {
	        	session.delete(usuario);
	        	}
	        	catch (HibernateException e) {
	                e.printStackTrace();
	                session.getTransaction().rollback();
	            }
	        }
	        session.getTransaction().commit();
	        return usuario;
	    }
	    
	    public Usuario load(int idUsuario) {
	        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	        session.beginTransaction();
	        Usuario usuario = (Usuario) session.get(Usuario.class, idUsuario); // load(Usuario.class, id);
	        session.getTransaction().commit();
	        return usuario;
	    }
	    
	    public Usuario update(Usuario usuario) {
	    	Session session = getSessionFactory().getCurrentSession();
	        session.getTransaction().begin();
	    	
	    	try {
	           	session.update(usuario);
	        }
	        catch (HibernateException e) {
	            e.printStackTrace();
	            session.getTransaction().rollback();
	        }
	        session.getTransaction().commit();
	        return usuario;
	    }
	    
	        
		@SuppressWarnings("unchecked")
		public List<Usuario> list() {
	         
	        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	        session.beginTransaction();
	        List<Usuario> usuario = null;
	        try {
	             
	            usuario = (List<Usuario>)session.createQuery("from Usuario").list();
	             
	        } 
	        catch (HibernateException e) {
	            e.printStackTrace();
	            session.getTransaction().rollback();
	        
	        }
	        session.getTransaction().commit();
	        return usuario;
	    }
}
